package com.allen.study.infrastructure.persistence.assembler;

import com.allen.study.application.api.response.SysEmpRoleQueryResponse;
import com.allen.study.domain.entity.SysEmpRole;
import com.allen.study.infrastructure.persistence.assembler.mapper.ISysEmpRolePOStructMapper;
import com.allen.study.infrastructure.persistence.po.SysEmpRolePO;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 用户角色关联表类型转换
 *
 * @author AllenSun
 * @since 2025-04-23 20:46
 */
@Component
public class SysEmpRolePOAssembler {

    /**
     * 用户角色关联表持久化对象装配
     *
     * @param sysEmpRole 用户角色关联表实体
     * @return 用户角色关联表持久化对象
     */
    public SysEmpRolePO assembler(SysEmpRole sysEmpRole) {
        return ISysEmpRolePOStructMapper.INSTANCE.fromEntity(sysEmpRole);
    }

    /**
     * 用户角色关联表持久化对象装配
     *
     * @param sysEmpRoleList 用户角色关联表实体
     * @return 用户角色关联表持久化对象
     */
    public List<SysEmpRolePO> assembler(List<SysEmpRole> sysEmpRoleList) {
        return ISysEmpRolePOStructMapper.INSTANCE.fromEntity(sysEmpRoleList);
    }

    /**
     * 用户角色关联表持久化对象 转 用户角色关联表实体
     *
     * @param sysEmpRolePO 用户角色关联表持久化对象
     * @return 用户角色关联表实体
     */
    public SysEmpRole toEntity(SysEmpRolePO sysEmpRolePO) {
        return ISysEmpRolePOStructMapper.INSTANCE.toEntity(sysEmpRolePO);
    }

    /**
     * 用户角色关联表持久化对象列表  转 用户角色关联表实体列表
     *
     * @param sysEmpRolePOList 用户角色关联表持久化对象
     * @return 用户角色关联表实体
     */
    public List<SysEmpRole> toEntity(List<SysEmpRolePO> sysEmpRolePOList) {
        return ISysEmpRolePOStructMapper.INSTANCE.toEntity(sysEmpRolePOList);
    }

    /**
     * 用户角色关联表持久化对象 转 用户角色关联表查询响应数据传输对象
     *
     * @param sysEmpRolePO 用户角色关联表持久化对象
     * @return 用户角色关联表查询响应数据传输对象
     */
    public SysEmpRoleQueryResponse toQueryResponse(SysEmpRolePO sysEmpRolePO) {
        return ISysEmpRolePOStructMapper.INSTANCE.toQueryResponse(sysEmpRolePO);
    }

    /**
     * 用户角色关联表持久化对象列表 转 用户角色关联表查询响应数据传输对象列表
     *
     * @param sysEmpRolePOList 用户角色关联表持久化对象列表
     * @return 用户角色关联表查询响应数据传输对象列表
     */
    public List<SysEmpRoleQueryResponse> toQueryResponse(List<SysEmpRolePO> sysEmpRolePOList) {
        return ISysEmpRolePOStructMapper.INSTANCE.toQueryResponse(sysEmpRolePOList);
    }
}
